package com.example.no1admin.service.impl;

import com.example.no1admin.ex.ServiceException;
import com.example.no1admin.mapper.UserMapper;
import com.example.no1admin.pojo.entity.User;
import com.example.no1admin.pojo.vo.user.UserListVO;
import com.example.no1admin.pojo.dto.user.UserUpdateDTO;
import com.example.no1admin.service.IUserService;
import com.example.no1admin.web.ServiceCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
@Slf4j
public class UserServiceImpl implements IUserService {


    @Autowired
    private UserMapper mapper;

    /**
     * 用户列表查询
     * @return 返回查询到的用户信息
     */
    public List<UserListVO> list(){
        log.debug("开始处理查询用户列表的业务");
        List<UserListVO> list = mapper.list();
        log.debug("<<<<<<<<<<<<<{}",list);
        return list ;
    }

    /**
     * 根据id修改用户
     *
     */
    @Override
    public void updateById(UserUpdateDTO userUpdateDTO) {

        log.debug("id:{}enable:{}",userUpdateDTO.getId(),userUpdateDTO.getEnable());

        // 判断用户是否存在
        if(mapper.getById(userUpdateDTO.getId()) == null){
            throw new ServiceException(ServiceCode.ERR_UPDATE,"修改用户信息失败，用户不存在，请刷新！");
        }

        // 修改用户数据
        User user = new User();
        BeanUtils.copyProperties(userUpdateDTO,user);
        int rows = mapper.updateById(user);

        // 修改失败
        if(rows!=1){
            throw new ServiceException(ServiceCode.ERR_UNKNOWN,"修改用户失败，服务器忙，请稍后再次尝试！");
        }
    }

}
